home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
tex
/
texsrc.arc
/
TEX6.C
< prev
next >
Wrap
C/C++ Source or Header
|
1988-09-14
|
60KB
|
2,134 lines
overlay "tex6"
#define EXTERN extern
#include "texd.h"
alignpeek () { /* 20 */ r_alignpeek
lab20: alignstate = 1000000 ;
do { getxtoken () ;
} while ( ! ( curcmd != 10 ) ) ;
if ( curcmd == 34 )
{
scanleftbrac () ;
newsavelevel ( 7 ) ;
if ( curlist .modefield == - 1 )
normalparagr () ;
}
else if ( curcmd == 2 )
finalign () ;
else if ( ( curcmd == 5 ) && ( curchr == 130 ) )
goto lab20 ;
else {
initrow () ;
initcol () ;
}
}
halfword zfiniteshrink ( p )
halfword p ;
{register halfword Result; r_finiteshrink
halfword q ;
if ( noshrinkerro )
{
noshrinkerro = false ;
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 771 ) ;
}
{
helpptr = 5 ;
helpline [ 4 ] = 772 ;
helpline [ 3 ] = 773 ;
helpline [ 2 ] = 774 ;
helpline [ 1 ] = 775 ;
helpline [ 0 ] = 776 ;
}
error () ;
}
q = newspec ( p ) ;
mem [(long) q ] .hh.b1 = 0 ;
deletegluere ( p ) ;
Result = q ;
return(Result) ;
}
ztrybreak ( pi , breaktype )
integer pi ;
smallnumber breaktype ;
{/* 10 30 31 22 60 */ r_trybreak
halfword r ;
halfword prevr ;
halfword oldl ;
boolean nobreakyet ;
halfword prevprevr ;
halfword s ;
halfword q ;
halfword v ;
integer t ;
internalfont f ;
halfword l ;
boolean noderstaysac ;
scaled linewidth ;
quarterword fitclass ;
halfword b ;
integer d ;
boolean artificialba ;
halfword savelink ;
scaled shortfall ;
fourquarters qi;
if ( abs ( pi ) >= 10000 )
if ( pi > 0 )
goto lab10 ;
else pi = - 10000 ;
nobreakyet = true ;
prevr = memtop - 7 ;
oldl = 0 ;
curactivewid [ 1 ] = activewidth [ 1 ] ;
curactivewid [ 2 ] = activewidth [ 2 ] ;
curactivewid [ 3 ] = activewidth [ 3 ] ;
curactivewid [ 4 ] = activewidth [ 4 ] ;
curactivewid [ 5 ] = activewidth [ 5 ] ;
curactivewid [ 6 ] = activewidth [ 6 ] ;
while ( true ) {
lab22: r = mem [(long) prevr ] .hh .v.RH ;
if ( mem [(long) r ] .hh.b0 == 2 )
{
curactivewid [ 1 ] = curactivewid [ 1 ] + mem [(long) r + 1 ] .cint ;
curactivewid [ 2 ] = curactivewid [ 2 ] + mem [(long) r + 2 ] .cint ;
curactivewid [ 3 ] = curactivewid [ 3 ] + mem [(long) r + 3 ] .cint ;
curactivewid [ 4 ] = curactivewid [ 4 ] + mem [(long) r + 4 ] .cint ;
curactivewid [ 5 ] = curactivewid [ 5 ] + mem [(long) r + 5 ] .cint ;
curactivewid [ 6 ] = curactivewid [ 6 ] + mem [(long) r + 6 ] .cint ;
prevprevr = prevr ;
prevr = r ;
goto lab22 ;
}
{
l = mem [(long) r + 1 ] .hh .v.LH ;
if ( l > oldl )
{
if ( ( minimumdemer < 1073741823 ) && ( ( oldl != easyline ) || ( r ==
memtop - 7 ) ) )
{
if ( nobreakyet )
{
nobreakyet = false ;
breakwidth [ 1 ] = background [ 1 ] ;
breakwidth [ 2 ] = background [ 2 ] ;
breakwidth [ 3 ] = background [ 3 ] ;
breakwidth [ 4 ] = background [ 4 ] ;
breakwidth [ 5 ] = background [ 5 ] ;
breakwidth [ 6 ] = background [ 6 ] ;
s = curp ;
if ( breaktype > 0 )
if ( curp != 0 )
{
t = mem [(long) curp ] .hh.b1 ;
v = curp ;
s = mem [(long) curp + 1 ] .hh .v.RH ;
while ( t > 0 ) {
decr ( t ) ;
v = mem [(long) v ] .hh .v.RH ;
if ( ( v >= himemmin ) )
{
f = mem [(long) v ] .hh.b0 ;
/* breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase [
f ] + fontinfo [ charbase [ f ] + mem [(long) v ] .hh.b1 ] .qqqq
.b0 ] .cint ;
*/
qi = fontinfo [ charbase [ f ] + mem [(long) v ] .hh.b1 ] .qqqq;
breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase [ f ]
+ qi .b0 ] .cint ;
}
else switch ( mem [(long) v ] .hh.b0 )
{case 6 :
{
f = mem [(long) v + 1 ] .hh.b0 ;
/* breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase
[ f ] + fontinfo [ charbase [ f ] + mem [(long) v + 1 ] .hh.b1 ]
.qqqq .b0 ] .cint ;
*/
qi = fontinfo [ charbase [ f ] + mem [(long) v + 1 ] .hh.b1 ].qqqq;
breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase
[ f ] +qi.b0 ] .cint ;
}
break ;
case 0 :
case 1 :
case 2 :
case 11 :
breakwidth [ 1 ] = breakwidth [ 1 ] - mem [(long) v + 1 ] .cint ;
break ;
default :
confusion ( 777 ) ;
break ;
}
}
while ( s != 0 ) {
if ( ( s >= himemmin ) )
{
f = mem [(long) s ] .hh.b0 ;
/* breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase [
f ] + fontinfo [ charbase [ f ] + mem [(long) s ] .hh.b1 ] .qqqq
.b0 ] .cint ;
*/
qi = fontinfo [ charbase [ f ] + mem [(long) s ] .hh.b1 ] .qqqq;
breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase [ f ]
+ qi .b0 ] .cint ;
}
else switch ( mem [(long) s ] .hh.b0 )
{case 6 :
{
f = mem [(long) s + 1 ] .hh.b0 ;
/* breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase
[ f ] + fontinfo [ charbase [ f ] + mem [(long) s + 1 ] .hh.b1 ]
.qqqq .b0 ] .cint ;
*/
qi = fontinfo [ charbase [ f ] + mem [(long) s + 1 ] .hh.b1 ].qqqq;
breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase
[ f ] +qi.b0 ] .cint ;
}
break ;
case 0 :
case 1 :
case 2 :
breakwidth [ 1 ] = breakwidth [ 1 ] + mem [(long) s + 1 ] .cint ;
break ;
case 11 :
if ( ( t == 0 ) && ( mem [(long) s ] .hh.b1 != 2 ) )
t = - 1 ;
else breakwidth [ 1 ] = breakwidth [ 1 ] + mem [(long) s + 1 ]
.cint ;
break ;
default :
confusion ( 778 ) ;
break ;
}
incr ( t ) ;
s = mem [(long) s ] .hh .v.RH ;
}
breakwidth [ 1 ] = breakwidth [ 1 ] + discwidth ;
if ( t == 0 )
s = mem [(long) v ] .hh .v.RH ;
}
while ( s != 0 ) {
if ( ( s >= himemmin ) )
goto lab30 ;
switch ( mem [(long) s ] .hh.b0 )
{case 10 :
{
v = mem [(long) s + 1 ] .hh .v.LH ;
breakwidth [ 1 ] = breakwidth [ 1 ] - mem [(long) v + 1 ] .cint ;
breakwidth [ 2 + mem [(long) v ] .hh.b0 ] = breakwidth [ 2 + mem [(long)
v ] .hh.b0 ] - mem [(long) v + 2 ] .cint ;
breakwidth [ 6 ] = breakwidth [ 6 ] - mem [(long) v + 3 ] .cint ;
}
break ;
case 12 :
;
break ;
case 9 :
case 11 :
if ( mem [(long) s ] .hh.b1 == 2 )
goto lab30 ;
else breakwidth [ 1 ] = breakwidth [ 1 ] - mem [(long) s + 1 ] .cint
;
break ;
default :
goto lab30 ;
break ;
}
s = mem [(long) s ] .hh .v.RH ;
}
lab30: ;
}
if ( mem [(long) prevr ] .hh.b0 == 2 )
{
mem [(long) prevr + 1 ] .cint = mem [(long) prevr + 1 ] .cint - curactivewid [
1 ] + breakwidth [ 1 ] ;
mem [(long) prevr + 2 ] .cint = mem [(long) prevr + 2 ] .cint - curactivewid [
2 ] + breakwidth [ 2 ] ;
mem [(long) prevr + 3 ] .cint = mem [(long) prevr + 3 ] .cint - curactivewid [
3 ] + breakwidth [ 3 ] ;
mem [(long) prevr + 4 ] .cint = mem [(long) prevr + 4 ] .cint - curactivewid [
4 ] + breakwidth [ 4 ] ;
mem [(long) prevr + 5 ] .cint = mem [(long) prevr + 5 ] .cint - curactivewid [
5 ] + breakwidth [ 5 ] ;
mem [(long) prevr + 6 ] .cint = mem [(long) prevr + 6 ] .cint - curactivewid [
6 ] + breakwidth [ 6 ] ;
}
else if ( prevr == memtop - 7 )
{
activewidth [ 1 ] = breakwidth [ 1 ] ;
activewidth [ 2 ] = breakwidth [ 2 ] ;
activewidth [ 3 ] = breakwidth [ 3 ] ;
activewidth [ 4 ] = breakwidth [ 4 ] ;
activewidth [ 5 ] = breakwidth [ 5 ] ;
activewidth [ 6 ] = breakwidth [ 6 ] ;
}
else {
q = getnode ( 7 ) ;
mem [(long) q ] .hh .v.RH = r ;
mem [(long) q ] .hh.b0 = 2 ;
mem [(long) q ] .hh.b1 = 0 ;
mem [